package com.gyc.dubbo.provider;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.gyc.dubbo.provider.service.api.ProviderApiService;
import com.gyc.dubbo.provider.service.api.ProviderApierviceImpl;

import java.io.IOException;

public class AppApi {
    public static void main(String[] args) throws IOException {
        // 服务实现
        ProviderApiService providerApiService = new ProviderApierviceImpl();
        //设置用用名称
        ApplicationConfig config = new ApplicationConfig();
        //设置应用名称
        config.setName("gycProvider");
        //设置owner
        config.setOwner("gyc");

        //链接注册中心
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("zookeeper://localhost:2181");
        registryConfig.setCheck(false);

        //服务端协议配置
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(20880);

        // 服务提供者暴露服务配置
        ServiceConfig<ProviderApiService> service = new ServiceConfig<ProviderApiService>(); // 此实例很重，封装了与注册中心的连接，请自行缓存，否则可能造成内存和连接泄漏
        service.setApplication(config);
        service.setRegistry(registryConfig); // 多个注册中心可以用setRegistries()
        service.setProtocol(protocolConfig); // 多个协议可以用setProtocols()
        service.setInterface(ProviderApiService.class);
        service.setRef(providerApiService);
        service.setVersion("1.0.0");
        // 暴露及注册服务
        service.export();
        System.in.read();
    }
}
